home *** CD-ROM | disk | FTP | other *** search
/ Biodiversity of Illinois 2: Woodland Habitats / Biodiversity of Illinois 2 - Woodland Habitats.iso / mac / casts / PDFxtraBehaviors.cst / 00017_Script_PDF_GetText < prev    next >
Text File  |  2006-07-11  |  6KB  |  180 lines

  1. -- Get Text
  2.  
  3. Property pEvent, pSprite, pDestMember, pAlertFlag
  4.  
  5. on doGetText me
  6.   -- put the current page text into the member specified
  7.   myMember = me.ExtractMemberFromString(pDestMember)[2]
  8.   myMember.text = PDF_GetText(sprite pSprite)
  9.   if PDF_status(sprite pSprite) then alert "PDF Behavior Error"&RETURN&PDF_error(sprite pSprite)
  10. end doGetText
  11.  
  12. on mouseUp me
  13.   if (pEvent = #mouseUp) then doGetText(me)
  14. end mouseUp
  15.  
  16. on mouseDown me
  17.   if (pEvent = #mouseDown) then doGetText(me)
  18. end mouseDown
  19.  
  20. -- standard behavior stuff --
  21. on getPropertyDescriptionList me
  22.   set defaultValues = GetDefaultValues (me)
  23.   
  24.   set pdfSpriteList = getProp (defaultValues, #spriteList)
  25.   set defSprite     = getProp (defaultValues, #defaultSprite)
  26.   if (defSprite=0) then 
  27.     if the ticks - pAlertFlag > 10 then
  28.       alert "Please create a sprite of type PDF first."
  29.     end if
  30.     set pAlertFlag = the ticks -- The ticks when the user clicked "OK"
  31.     
  32.     exit
  33.   end if
  34.   
  35.   -- retrieve all members of type text, field or Flashcomponent
  36.   lTextFields = me.GetMembers([#text, #field, #flashcomponent])
  37.   if (lTextFields = []) then
  38.     if the currentSpriteNum then
  39.       alert "You need at least one member of type #field or #text to use this behavior."
  40.     end if
  41.     exit
  42.   end if 
  43.   
  44.   set p_list = [:]
  45.   addprop p_list, #pEvent, [ #comment: "Event", #format:#symbol, #range:[#mouseUp, #mouseDown], #default:#mouseUp]
  46.   addprop p_list, #pSprite, [ #comment: "PDF Sprite is in channel:", #format:#symbol, #range:pdfSpriteList, #default:defSprite]
  47.    if (lTextFields.count = 0) then
  48.     addprop p_list, #pDestMember, [ #comment: "Put page text in:", #format: #string, #default:"<no named fields or text members available>"]
  49.   else  
  50.     addprop p_list, #pDestMember, [ #comment: "Put page text in:", #format:#member, #default:lTextFields[1], #range:lTextFields]
  51.   end if  
  52.   return p_list
  53. end
  54.  
  55. on getBehaviorDescription
  56.   tmp = "Extract the text of the current page of the PDF document to the designated Director field. The retrieved words order depend on the structure of the PDF document." 
  57.   tmp = tmp & RETURN& "Available for Windows only with full version of Acrobat."
  58.   tmp = tmp &RETURN&RETURN& "--- PARAMETERS ---" &RETURN& " - Event: mouseUp or mouseDown."
  59.   tmp = tmp &RETURN& " - PDF Sprite is in channel: which channel contains the PDF Sprite."
  60.   tmp = tmp &RETURN& " - Put result in: the name of a text or field cast member to store the text in."  
  61.   tmp = tmp &RETURN&RETURN&  "Free to use and abuse. (c)1999-2005, Integration New Media, Inc."  &RETURN& "Thanks to James Newton for his suggestions"
  62.   return tmp
  63.   
  64. end
  65. on getBehaviorTooltip
  66.   return "Extract the text of the current page of the" & RETURN& "PDF document to the designated Director field." & RETURN& "Available for Windows only with full version of Acrobat."
  67.   
  68.   -- utils --
  69. on GetDefaultValues me
  70.   if the currentSpriteNum then
  71.     set spriteList = GetSpriteList (me #PDF)
  72.     if count (spriteList) then
  73.       set defaultSprite = getAt (spriteList, 1)
  74.     else
  75.       set defaultSprite = 0
  76.     end if
  77.     
  78.     return [#spriteList: spriteList, #defaultSprite: defaultSprite]
  79.     
  80.   else -- the currentSpriteNum = 0
  81.     -- Director is merely recompiling this script: return dummy values
  82.     return [#spriteList: [1], #defaultSprite: 1]
  83.   end if
  84. end 
  85.  
  86.  
  87. on GetSpriteList me, memberType
  88.   -- return list of sprites of type memberType in current frame
  89.   global version
  90.     if (char 1 of version = 6) then
  91.       set maxSprite = 120
  92.     else
  93.       set maxSprite = the lastChannel
  94.     end if
  95.     
  96.     set aList=[]
  97.     
  98.     repeat with i = 1 to maxSprite
  99.       set spriteMember = the member of sprite i
  100.       -- if (string(m) contains "member 0") then next repeat -- unnecessary
  101.       if (the type of spriteMember = memberType) then -- (JN) Line break
  102.         append (aList, i)
  103.       end if
  104.     end repeat
  105.     
  106.     return aList
  107.  
  108. end GetSpriteList
  109.  
  110.  
  111. on GetMembers me, theMembersTypeNeeded  
  112.   
  113.   lResult = []
  114.   
  115.   lCastLib = the number of castLibs
  116.   
  117.   repeat while lCastLib -- repeat through all linked castlibs
  118.     
  119.     lMemberNum = the number of members of castLib(lCastLib)
  120.     
  121.     repeat while lMemberNum -- repeat through all members of the current castlib
  122.       lMemberType = member(lMemberNum, lCastLib).type
  123.       
  124.       if (theMembersTypeNeeded.getOne(lMemberType) > 0) then -- check if the member's type is contained in theMembersTypeNeeded
  125.         lName = member(lMemberNum, lCastLib).name 
  126.         if (lName <> "") then 
  127.           
  128.           lResult.AddAt(1, lName&&"(member"&&lMemberNum&&"of castlib"&&lCastLib&")") -- Add the member to the list
  129.         end if
  130.       end if
  131.       
  132.       set lMemberNum = lMemberNum - 1 -- check the next member
  133.     end repeat
  134.     
  135.     set lCastLib = lCastLib - 1 -- check the next castlib
  136.   end repeat
  137.   
  138.   return lResult
  139. end GetMembers
  140.  
  141. --
  142. -- Extract name and reference to a member contained in a string
  143. --    in a list [<name>, <(member xxx of castlib yyy)>]
  144. -- the String contains a reference to a member formatted like
  145. --    "<member name> (member xxx of castlib yyy)"
  146. --
  147. on ExtractMemberFromString me, theString
  148.   lResult = ["", VOID]
  149.   
  150.   if (StringP(theString)) then -- check if theString contains a string
  151.     lPos = offset("(member ", theString) -- find the offset of the substring "(member "
  152.     if (lPos > 0) then -- substring found = theString is a valid member reference
  153.       lName= ""
  154.       
  155.       if (lPos > 2) then
  156.         lName = theString.char[1..lPos-2]
  157.         if (lName) = "<no name>" then
  158.           lName = ""
  159.         end if
  160.       end if
  161.       
  162.       lMember = value(theString.char[lPos..theString.chars.count])
  163.       -- check if the member name and member reference are consistent
  164.       if (lMember <> VOID) then
  165.         if (lMember.name <> lName) then -- the user probably moved the cast member, we'll try to find it
  166.           if (lName <> "") then -- the member didn't have a name, so it's useless to look for it
  167.             lMember = member(lName)
  168.           else
  169.             lMember = VOID
  170.           end if
  171.         end if
  172.       end if
  173.       
  174.       lResult = [lName, lMember]
  175.     end if
  176.   end if
  177.   
  178.   return lResult
  179. end ExtractMemberFromString
  180.